Skip to main content

Java 反射 - 框架设计的灵魂

反射:框架设计的灵魂

  • 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码
  • 反射:将类的各个组成部分封装为其他对象,这就是反射机制

好处:

  1. 可以在程序运行过程中,操作这些对象。
  2. 可以解耦,提高程序的可扩展性。

Java 代码在计算机中经历的三个阶段

  • Source 源代码阶段:_.java 被编译成 _.class 字节码文件。
  • Class 类对象阶段:\*.class 字节码文件被类加载器加载进内存,并将其封装成 Class 对象(用于在内存中描述字节码文件),Class 对象将原字节码文件中的成员变量抽取出来封装成数组Field[],将原字节码文件中的构造函数抽取出来封装成数组 Construction[],在将成员方法封装成 Method[]。当然 Class 类内不止这三个,还封装了很多,我们常用的就这三个。
  • RunTime 运行时阶段:创建对象的过程 new。

获取 Class 对象的方式:

  1. Class.forName("全类名"):将字节码文件加载进内存,返回 Class 对象
  • 多用于配置文件,将类名定义在配置文件中。读取文件,加载类
// 1.class.forName("全类名")
Class cls1 = Class.forName("com.learn.domain.Person");
  1. 类名.class:通过类名的属性 class 获取
  • 多用于参数的传递
// 2. 类名.class
Class cls2 = Person.class;
  1. 对象.getClass():getClass()方法在 Object 类中定义着。
  • 多用于对象的获取字节码的方式
// 3. 对象.getClass()
Person p = new Person();
Class<? extends Person> cls3 = p.getClass();